home *** CD-ROM | disk | FTP | other *** search
/ Netware Super Library / Netware Super Library.iso / demo / winsnp10 / winsnoop.doc < prev   
Encoding:
Text File  |  1994-03-18  |  21.3 KB  |  600 lines

  1. WINSNOOP
  2. ========
  3.  
  4. INTRODUCTION
  5.  
  6. WINSNOOP is a system for network administrators to capture information on
  7. each user's Windows 3.1 Program Manager desktop to a set of (Paradox)
  8. database tables. WINSNOOP consists of 2 data collection agents, or
  9. 'snoopers', called GRPSNOOP and INISNOOP, and a set of Paradox database
  10. tables, GROUPS.DB, ICONS.DB and INIFILES.DB. References in this document
  11. to WINSNOOP shall be taken to mean GRPSNOOP and INISNOOP collectively. The
  12. rest of this document shall refer almost exclusively to the individual
  13. programs that comprise WINSNOOP, GRPSNOOP.EXE and INISNOOP.EXE.
  14.  
  15. Group Snoop (GRPSNOOP) and INI Snoop (INISNOOP) are DOS programs that can
  16. be used on a network to build and maintain a (Paradox) database of Windows
  17. 3.1 groups, icons and INI files for each user on the network. By using
  18. GRPSNOOP and INISNOOP you can see what groups and icons (and icon properties)
  19. a user has on his/her Windows 3.1 Program Manager desktop. You can also
  20. browse the contents of all INI files in the user's personal WINDOWS
  21. directory.
  22.  
  23. GRPSNOOP and INISNOOP together give you the raw information to do such
  24. things as implement a remote help desk, control use of unauthorized
  25. software and games, estimate software licensing requirements, or to help
  26. ease the task of upgrading and/or changing software applications across the
  27. network. Note that no Paradox forms, queries or reports are included with
  28. this system. You must develop the forms, queries and reports that meet your
  29. particular needs. This system provides only the basic table structures for
  30. the GROUPS, ICONS and INIFILES tables, as well as the programs GRPSNOOP.EXE
  31. and INISNOOP.EXE which populate these tables.
  32.  
  33. LIMITATIONS
  34.  
  35. GRPSNOOP/INISNOOP have been extensively tested, but it is impossible to
  36. test all possible uses of these programs, and errors can occur. In no event
  37. will Strider Software be liable for any damages, including loss of data,
  38. lost profits, or any other incidental or consequential damages arising from
  39. the use of these programs.
  40.  
  41. RESTRICTIONS OF THE DEMO VERSIONS OF GRPSNOOP AND INISNOOP
  42.  
  43. The demonstration versions of GRPSNOOP and INISNOOP, have the following
  44. restrictions:
  45.  
  46. 1. GRPSNOOP will only read the information for the group files MAIN.GRP, 
  47. ACCESSOR.GRP and GAMES.GRP.
  48.  
  49. 2. INISNOOP will only read INI file contents for the files PROGMAN.INI and
  50. WIN.INI.
  51.  
  52. The registered versions of GRPSNOOP and INISNOOP do not have the above
  53. mentioned restrictions. This file documents how to use the registered
  54. versions of these programs. You must keep the above restrictions in mind
  55. when you read the remainder of this document if you are evaluating the
  56. demo versions.
  57.  
  58. LIMITED LICENSE
  59.  
  60. This software is distributed on a "shareware" basis. It is not free software,
  61. or in the public domain. You are granted a license to use these copies of
  62. GRPSNOOP and INISNOOP for a free 30 day evaluation period. If you wish to 
  63. continue to use GRPSNOOP and/or INISNOOP after the evaluation period, you
  64. must send a registration fee of $80 for GRPSNOOP/INISNOOP to Strider
  65. Software to obtain a perpetual single-server license. For your fee you
  66. will be sent a diskette with the latest registered versions of the
  67. programs.
  68.  
  69. You may give the demo versions of these programs to others provided you
  70. follow these restrictions: The program files (GRPSNOOP.EXE and INISNOOP.EXE)
  71. are not modified in any way, the documentation file is included
  72. (WINSNOOP.DOC), the registration order form is included (ORDER.DOC), and
  73. you disclose the legal requirement to register the software for use
  74. beyond the 30 day eval period. These software programs are owned by
  75. Strider Software and are licensed for use to registered licensees. You
  76. may not sell these programs, but you may charge a modest fee to
  77. distribute the programs on diskettes or electronic bulletin boards.
  78.  
  79. ACKNOWLEDGMENTS
  80.  
  81. Paradox and the Paradox Engine are registered trademarks of Borland
  82. International.
  83.  
  84. Microsoft and Windows are trademarks of Microsoft Corporation.
  85.  
  86. REQUIREMENTS
  87.  
  88. GRPSNOOP and INISNOOP require DOS 3.1 or higher and an IBM PC (or compatible)
  89. with a 386 (or higher) processor. If either of these conditions are not met
  90. then GRPSNOOP/INISNOOP will terminate with an error message.
  91.  
  92. Supported networks are those supported by the Borland Paradox Engine, which
  93. these products use to access and update the Paradox tables. These are:
  94.  
  95. - IBM Token Ring or PC Network with IBM PC Local Area Network Program (v 1.12
  96. or higher).
  97.  
  98. - Novell Advanced NetWare (v 2.0A or higher)
  99.  
  100. - 3Com 3+ Share network (v 1.5.1 or higher)
  101.  
  102. - DEC Pathworks (v 1.0 or higher)
  103.  
  104. - Microsoft Local Area Network (LAN) Manager (v 2.0 or higher)
  105.  
  106. - Banyan Vines network (v 2.10 or higher)
  107.  
  108. - AT&T StarGROUP for DOS (v 3.1 or higher)
  109.  
  110. Any other network configuration that is 100% compatible with one of the
  111. networks listed above and with DOS 3.1 or higher.
  112.  
  113. Paradox 4.0 for DOS or higher, or Paradox for Windows v 1.0 or higher is
  114. required to access the tables produced by GRPSNOOP/INISNOOP. In particular,
  115. Paradox 3.5 cannot access these tables.
  116.  
  117. USING GRPSNOOP/INISNOOP
  118.  
  119. Setting up to use GRPSNOOP/INISNOOP consists of doing the following:
  120.  
  121. 1. Installing a supported version of Paradox (if not already done)
  122.  
  123. 2. Setting up a directory for the Paradox network control file
  124. (PDOXUSRS.NET) to control concurrent access to the Paradox tables on
  125. the network.
  126.  
  127. 3. Creating a directory on the server to hold the tables GROUPS.DB,
  128. ICONS.DB and INIFILES.DB, with the required visibility and access rights
  129. for users on the network.
  130.  
  131. 4. Creating a batch file(s) on the server that run GRPSNOOP/INISNOOP with
  132. appropriate parameters for your network.
  133.  
  134. Further details on each installation step follows:
  135.  
  136. 1. INSTALLING PARADOX
  137.  
  138. If Paradox has not been installed, you must install a supported version by
  139. following the documentation provided for this purpose by Borland. Note that
  140. Paradox itself does not have to be installed on the server, but may need to
  141. be, depending on your intended uses for the product.
  142.  
  143. 2. SETTING UP PDOXUSRS.NET
  144.  
  145. If not already done, a directory must be established on the server for 
  146. the Paradox network control file PDOXUSRS.NET. All users must have read, 
  147. write and create access to this directory(Ex: Q:\PARADOX). Consult your
  148. Paradox manuals for further details.
  149.  
  150. 3. SETTING UP A DIRECTORY TO HOLD PARADOX TABLES
  151.  
  152. Create a directory on the server (Ex: R:\WINDATA) that is visible to all
  153. users. All users must have read/write access to this directory. Copy the
  154. (empty) table structures and related files (GROUPS.*, ICONS.* and
  155. INIFILES.*) from the distribution diskette to this directory.
  156.  
  157. 4. CREATE BATCH FILES TO RUN GRPSNOOP/INISNOOP
  158.  
  159. Copy the files GRPSNOOP.EXE and INISNOOP.EXE to a directory on the server
  160. where all users on the network have sufficient rights to execute them (ex: 
  161. Y:\UTILS).
  162.  
  163. Create a batch file (see the example below) which invokes GRPSNOOP.EXE and
  164. INISNOOP.EXE with the appropriate command line switches and arguments for
  165. your network and configuration. Consult the section 'GRPSNOOP/INISNOOP 
  166. Reference' for details on how to configure these programs. The batch file
  167. should also be located on the server in a directory that is accessible to
  168. all users (ex: Y:\UTILS). The batch file can either be run explicitly from
  169. each workstation, or could be run by the user when required, or could be run
  170. automatically as part of the user login process. You may want to run the
  171. batch file only once a week or month, as needed, to avoid unnecessary delays
  172. for the user at login time.
  173.  
  174. SAMPLE SETUP
  175.  
  176. Assume the following conditions are true:
  177.  
  178. 1. Paradox is installed on the network administrator's PC.
  179.  
  180. 2. The Paradox network control file is located in the directory Q:\PARADOX,
  181. on the server. This directory is visible to all users on the network with
  182. read/write/create access.
  183.  
  184. 3. The Paradox tables GROUPS.DB, ICONS.DB and INIFILES.DB (and related
  185. files) are located in the directory R:\WINDATA on the server. This directory
  186. is visible to all users on the network with read/write access.
  187.  
  188. 4. User's on the network either run a networked version of Windows 3.1, in
  189. which case their personal WINDOWS directory is X:\WIN, or else run Windows
  190. locally on their hard drive. The DOS environment variable NETWIN is set to
  191. TRUE during the login process for user's using the networked version of 
  192. Windows.
  193.  
  194. 5. The DOS environment variable USERNAME is set to the user's login name
  195. during the login process.
  196.  
  197. The following is a sample batch file for invoking GRPSNOOP/INISNOOP in this
  198. environment:
  199.  
  200. @ECHO OFF
  201.  
  202. IF /%NETWIN% == TRUE/ GOTO NETW
  203.  
  204. REM User runs Windows locally, assume WINDOWS dir is on the PATH
  205.  
  206. GRPSNOOP %USERNAME% Q:\PARADOX R:\WINDATA /b64
  207. INISNOOP %USERNAME% Q:\PARADOX R:\WINDATA /b64
  208.  
  209. GOTO END
  210.  
  211. :NETW
  212.  
  213. REM User runs networked version of WINDOWS, personal WINDOWS dir is X:\WIN
  214.  
  215. GRPSNOOP %USERNAME% Q:\PARADOX R:\WINDATA /wX:\WIN /b64
  216. INISNOOP %USERNAME% Q:\PARADOX R:\WINDATA /wX:\WIN /b64
  217.  
  218. GOTO END
  219.  
  220. :END
  221.  
  222.  
  223. TABLE STRUCTURES
  224. ================
  225.  
  226. GROUPS.DB
  227.  
  228. FIELD    NAME        TYPE    WIDTH    KEY
  229. 1    User        A    48    *
  230. 2    GroupFile    A    80    *
  231. 3    WinDir        A    80
  232. 4    Description    A    40
  233. 5    NumIcons    S
  234. 6    WindowState    A    20
  235. 7    GrpFileDate    D
  236. 8    GrpFileTime    A    20
  237. 9    UpdateDate    D
  238. 10    UpdateTime    A    20
  239.  
  240. 'User' is the network name of the user. GRPSNOOP uses the name specified as
  241. UserName on the command line to complete this field. It is up to 48
  242. characters in length.
  243.  
  244. 'GroupFile' is the fully qualified path name of a Windows Group file. For
  245. example, C:\WINDOWS\MAIN.GRP.
  246.  
  247. 'WinDir' is the location of the user's personal Windows directory. This is
  248. the location of the user's INI and GRP files. In a standalone installation
  249. of Windows, this is typically C:\WINDOWS. In a networked version of Windows,
  250. this might be something like U:\WIN.
  251.  
  252. 'Description' is the text that is displayed under the group icon when it is
  253. minimized on the Program Manager desktop, or the group window title when in
  254. the opened state.
  255.  
  256. 'NumIcons' is the number of icons contained within the group.
  257.  
  258. 'WindowState' is a text field describing the Window state of the group.
  259. Valid values are:
  260.  
  261.     Hidden
  262.     ShowNormal
  263.     ShowMinimized
  264.     ShowMaximized
  265.     ShowNoActivate
  266.     Show
  267.     Minimize
  268.     ShowMinNoActivate
  269.     ShowNA
  270.     Restore
  271.  
  272. 'GrpFileDate' is the date of last update (or creation) of the group file.
  273.  
  274. 'GrpFileTime' is the time of last update (or creation) of the group file.
  275.  
  276. 'UpdateDate' is the date that this record was posted to the GROUPS.DB table.
  277.  
  278. 'UpdateTime' is the time (as a formatted text string) that this record was
  279. posted to the GROUPS.DB table.
  280.  
  281. 'GMT' is a field used by GRPSNOOP when updating the records of GROUPS.DB.
  282.  
  283. This table has a composite primary key consisting of the 'User' and
  284. 'GroupFile' fields. This means that there cannot be more than one record in
  285. GROUPS.DB with the same values for the 'User' and 'GroupFile' fields.
  286.  
  287. ICONS.DB
  288.  
  289. FIELD    NAME        TYPE    WIDTH    KEY
  290. 1    User        A    48    *
  291. 2    GroupFile    A    80    *
  292. 3    Description    A    40    *
  293. 4    WinDir        A    80
  294. 5    CommandLine    A    160
  295. 6    WorkingDir    A    80
  296. 7    IconPath    A    80
  297. 8    IconIndex    S
  298. 9    ShortcutKey    A    20
  299. 10    RunMin        A    10
  300. 11    UpdateDate    D
  301. 12    UpdateTime    A    20
  302. 13    GMT        N
  303.  
  304. 'User' is the network name of the user. GRPSNOOP uses the name specified as
  305. UserName on the command line to complete this field. It is up to 48
  306. characters in length.
  307.  
  308. 'GroupFile' is the fully qualified path name of a Windows Group file. For
  309. example, C:\WINDOWS\MAIN.GRP.
  310.  
  311. 'Description' is the text displayed under the icon in the Program Manager
  312. group window.
  313.  
  314. 'WinDir' is the location of the user's personal Windows directory. This is
  315. the location of the user's INI and GRP files. In a standalone installation
  316. of Windows, this is typically C:\WINDOWS. In a networked version of Windows,
  317. this might be something like U:\WIN.
  318.  
  319. 'CommandLine' is the contents of the Command Line text box displayed in
  320. Program Manager's icon properties dialog box for this icon. This is the
  321. command used to start the application associated with this icon.
  322.  
  323. 'WorkingDir' is the contents of the Working Directory text box displayed in
  324. Program Manager's icon properties dialog box for this icon. This is the
  325. working directory for the application associated with this icon.
  326.  
  327. 'IconPath' is the fully qualified path name of the file that contains the
  328. icon being used for this application. This is typically the same file as is
  329. specified on the 'CommandLine' for Windows 3.1 applications.
  330.  
  331. 'IconIndex' specifies which icon within the file specified by 'IconPath' is
  332. being used for the application. Some files contain more than one icon.
  333.  
  334. 'ShortcutKey' is the contents of the Shortcut Key text box displayed in
  335. Program Manager's icon properties dialog box for this icon. If no shortcut
  336. key has been specified, 'NONE' is shown, otherwise it is a key combination
  337. such as 'CTRL+ALT+B'.
  338.  
  339. 'RunMin' is 'YES' or 'NO' depending on whether the Run Minimized check box
  340. in Program Manager's icon properties dialog box for this icon is checked or
  341. not. If it is checked, then Program Manager will launch the application in a
  342. minimized state when invoked.
  343.  
  344. 'UpdateDate' is the date that this record was posted to the ICONS.DB table.
  345.  
  346. 'UpdateTime' is the time (as a formatted text string) that this record was
  347. posted to the ICONS.DB table.
  348.  
  349. 'GMT' is a field used by GRPSNOOP when updating the records of ICONS.DB.
  350.  
  351. This table has a composite primary key consisting of the 'User', 'GroupFile'
  352. and 'Description' fields. This means that there cannot be more than one
  353. record in the ICONS.DB table with the same values for these fields.
  354.  
  355. INIFILES.DB
  356.  
  357. FIELD    NAME        TYPE    WIDTH    KEY
  358. 1    User        A    48    *
  359. 2    INIFile        A    13    *
  360. 3    WinDir        A    80
  361. 4    INIFileDate    D
  362. 5    INIFileTime    A    20
  363. 6    UpdateDate    D
  364. 7    UpdateTime    A    20
  365. 8    GMT        N
  366. 9    Contents    M    240
  367.  
  368. 'User' is the network name of the user. INISNOOP uses the name specified as
  369. UserName on the command line to complete this field. It is up to 48
  370. characters in length.
  371.  
  372. 'INIFile' is the DOS file name of the INI file. For example, WIN.INI.
  373.  
  374. 'WinDir' is the location of the user's personal Windows directory. This is
  375. the location of the user's INI and GRP files. In a standalone installation
  376. of Windows, this is typically C:\WINDOWS. In a networked version of Windows,
  377. this might be something like U:\WIN.
  378.  
  379. 'INIFileDate' is the date of last update of the INI file.
  380.  
  381. 'INIFileTime' is the time of last update of the INI file.
  382.  
  383. 'UpdateDate' is the date that this record was posted to the INIFILES.DB
  384. table.
  385.  
  386. 'UpdateTime' is the time (as a formatted text string) that this record was
  387. posted to the INIFILES.DB table.
  388.  
  389. 'GMT' is a field used by INISNOOP when updating the records of INIFILES.DB.
  390.  
  391. 'Contents' is a memo field containing the actual text contents of the INI
  392. file.
  393.  
  394. GRPSNOOP/INISNOOP Reference
  395. ===========================
  396.  
  397. Usage:    GRPSNOOP UserName NetPath [TablePath] [/Option1...]
  398.     INISNOOP UserName NetPath [TablePath] [/Option1...]
  399.  
  400. where:
  401.  
  402. UserName is the unique user name. Used as part of a composite key to
  403. distinguish Windows data records.
  404.  
  405. NetPath is the location of the Paradox network control file PDOXUSRS.NET.
  406. Ex: Q:\PARADOX.
  407.  
  408. TablePath is the location of the GROUPS.DB, ICONS.DB and INIFILES.DB
  409. Paradox tables. If not specified, defaults to NetPath.
  410.  
  411. Optional Parameters:
  412.  
  413. /wWinDir - WinDir is the location of the user's Window user definition
  414. files. That is, the user's WINDOWS directory; or, the location of the user's
  415. INI and GRP files. This is typically C:\WINDOWS in a standalone version of
  416. Windows. If not specified, the user's PATH statement is searched for the
  417. location of the file PROGMAN.INI.
  418.  
  419. /bBufferSize - Specifies the buffer size used (in Kb) for accessing Paradox
  420. tables on the network. The default size is 32Kb. Increasing the buffer size
  421. may be necessary in some cases if the Paradox table sizes get larger.
  422. Increasing the buffer size can substantially improve the performance of the
  423. program.
  424.  
  425. /pPassword - Password is an encrpypted version of the master table password
  426. assigned to the Paradox tables using the facilities of Paradox. GRPSNOOP and
  427. INISNOOP accept and encrypted version of the password in order to prevent
  428. unauthorized user's from determining the passwords by seeing the command
  429. line arguments to GRPSNOOP and INISNOOP in a batch file, for instance. See
  430. the section 'Using Table Passwords' for further details.
  431.  
  432. USING TABLE PASSWORDS
  433. =====================
  434.  
  435. Paradox lets you assign passwords to tables. If you wish to use this
  436. feature of Paradox to prevent unauthorized access to the information
  437. in these tables, you may do so. However, if you do password protect
  438. these tables, then GRPSNOOP and INISNOOP will have to know the passwords
  439. in order to access and update the tables.
  440.  
  441. In order to prevent users from determining the table passwords by
  442. seeing the command line arguments to GRPSNOOP and INISNOOP, these
  443. programs accept a special 'encrypted' version of the passwords, which
  444. are decrypted before being fed to Paradox. Use the encryption table
  445. below to determine the encrypted password that must be fed to GRPSNOOP
  446. and INISNOOP using the /pPassword command line switch.
  447.  
  448. Encryption Table
  449. ----------------
  450.  
  451. To determine the encrypted password to feed to GRPSNOOP/INISNOOP on
  452. the command line, look up each letter in the Paradox table password
  453. in the 'U' column of the table below and replace it with the
  454. corresponding letter in the 'E' column to the right. Note that digits
  455. and special characters (like @,$,% etc) do not get encrypted.
  456.  
  457. For example, suppose you have a table password of @NIGHT_97_owl!. The
  458. special characters would remain unchanged, but using the table to
  459. replace the letters you would come up with an encrypted password of
  460. @AJXQK_97_nji!. You would use the command line switch /p@AJXQK_97_nji!
  461. to tell GRPSNOOP/INISNOOP the password to use to open the tables.
  462.  
  463. U    E        U    E
  464. -    -        -    -
  465. a    h        A    N
  466. b    a        B    G
  467. c    t        C    Z
  468. d    m        D    S
  469. e    f        E    L
  470. f    y        F    E
  471. g    r        G    X
  472. h    k        H    Q
  473. i    d        I    J
  474. j    w        J    C
  475. k    p        K    V
  476. l    i        L    O
  477. m    b        M    H
  478. n    u        N    A
  479. o    n        O    T
  480. p    g        P    M
  481. q    z        Q    F
  482. r    s        R    Y
  483. s    l        S    R
  484. t    e        T    K
  485. u    x        U    D
  486. v    q        V    W
  487. w    j        W    P
  488. x    c        X    I
  489. y    v        Y    B
  490. z    o        Z    U
  491.  
  492.  
  493. RETURN VALUES AND ERROR MESSAGES
  494. ================================
  495.  
  496. The following table shows the various possible return codes and error
  497. messages for both GRPSNOOP and INISNOOP. Note that return codes from
  498. 1 to 137 and the corresponding error messages are those of the Paradox
  499. Engine.
  500.  
  501. RETCODE        ERROR MESSAGE
  502. -------        ------------------------
  503. 0        No error
  504. 1        Drive not ready
  505. 2        Directory not found
  506. 3        File is busy
  507. 4        File is locked
  508. 5        Could not find file
  509. 6        Table is corrupted
  510. 7        Primary index is corrupted
  511. 8        Primary index is out of date
  512. 9        Record is locked
  513. 10        Sharing violation
  514. 11        Sharing violation
  515. 12        No access to directory
  516. 13        Sort for index different from table
  517. 14        Single user but directory is shared
  518. 15        Multiple Paradox net files found
  519. 16        Directory is in use by Paradox 3.5
  520. 21        Insufficient password rights
  521. 22        Table is write-protected
  522. 30        Data type mismatch
  523. 31        Argument is out of range
  524. 33        Invalid argument
  525. 40        Not enough memory to complete operation
  526. 41        Not enough disk space to complete operation
  527. 50        Another user deleted record
  528. 51        Operation N/A for Blob open mode
  529. 52        Blob already open
  530. 53        Invalid offset into Blob
  531. 54        Invalid size for Blob
  532. 55        Another user modified Blob
  533. 56        Blob file corrupted
  534. 57        Cannot index on a Blob
  535. 59        Invalid Blob handle
  536. 60        Cannot search on a Blob field
  537. 70        No more file handles available
  538. 72        No more table handles available
  539. 73        Invalid date given
  540. 74        Invalid field name
  541. 75        Invalid field handle
  542. 76        Invalid table handle
  543. 78        Engine not initialized
  544. 79        Previous fatal error; cannot proceed
  545. 81        Table structures are different
  546. 82        Engine already initialized
  547. 83        Unable to perform operation on open table
  548. 86        No more temporary names available
  549. 89        Record was not found
  550. 92        Can't handle version number encountered
  551. 93        Feature not available for tables older than Paradox 4.0
  552. 94        Table is indexed
  553. 95        Table is not indexed
  554. 96        Secondary index is out of date
  555. 97        Key violation
  556. 98        Could not login on network
  557. 99        Table name is invalid
  558. 101        End of table
  559. 102        Start of table
  560. 103        No more record handles available
  561. 104        Invalid record handle
  562. 105        Operation on empty table
  563. 106        Invalid lock code
  564. 107        Engine not initialized with PXNetInit
  565. 108        Invalid file name
  566. 109        Invalid unlock
  567. 110        Invalid lock handle
  568. 111        Too many locks on table
  569. 112        Invalid sort order table
  570. 113        Invalid net type
  571. 114        Invalid directory name
  572. 115        Too many passwords specified
  573. 116        Invalid password
  574. 117        Buffer is too small for result
  575. 118        Table is busy
  576. 119        Table is locked
  577. 120        Table was not found
  578. 121        Secondary index was not found
  579. 122        Secondary index is corrupted
  580. 124        Disk is write protected
  581. 125        Record too big
  582. 126        General System error
  583. 127        Not enough stack space to complete operation
  584. 128        Table is full
  585. 129        Not enough swap buffer space to complete operation
  586. 130        Table is SQL replica
  587. 131        Too many clients for the Engine DLL
  588. 132        Exceeds limits specified in WIN.INI
  589. 133        No more slots for file handle remapping
  590. 134        Can't share Paradox net file -- is SHARE.EXE loaded?
  591. 135        Can't run Engine in Windows real mode
  592. 136        Can't modify table opened on non-maintained secondary index
  593. 137        Timed out trying to get a lock
  594. 251        Requires at least a 386 processor
  595. 252        Requires at least DOS version 3.1
  596. 253        Various or none related to file i/o error
  597. 254        Can't locate PROGMAN.INI file
  598. 255        Various messages related to invalid command line args
  599.  
  600.